package com.soft.mybatis.mapper;

import com.soft.mybatis.entity.User;
import com.soft.mybatis.entity.UserQueryVO;

import org.apache.ibatis.annotations.Select;

import java.util.HashMap;
import java.util.List;

public interface UserMapper {
    // 作业1：根据姓名查询用户性别
    String getGenderByName(String name);

    // 作业2：根据id更新用户信息
    int updateUserById(User user);

    // 作业3：根据id删除用户信息
    int deleteUserById(Integer id);

    //根据id查询用户信息
    User getUserById(Integer id);

    //插入用户
    int insertUser(User user);

    //作业1：按照性别和生日进行查询用户
    List<User> getUsersByGenderAndBirthday(HashMap<String,Object> hashMap);

    // 作业3：根据姓名更新用户的性别
    int updateGenderByName(HashMap<String,String> hashMap);

    //需求：通过性别和姓名查询用户列表，且id值是10或16或17  PS：不允许性别或者姓名为null或者空串
    List<User> getUsersByGenderAndName(UserQueryVO userQueryVO);

    //作业3：根据用户编号，关联查询用户信息及所下订单信息
    User getUserAndOrdersById(Integer id);


    //注解方式作业1：查询订单信息及其下单者信息 OO
    @Select("select * from user where id = #{userId}")
    User selectUser(Integer userId);

    //注解方式作业3：性别和姓名非空查询，且id in(10,16,17)
    @Select({"<script>",
               "select * from user",
               "<where>",
                   "<if test = 'user.gender != null and user.gender != \"\"'>",
                        "and gender = #{user.gender}",
                   "</if>",
                    "<if test = 'user.name != null and user.name != \"\"'>",
                        "and name like concat('%',#{user.name},'%')",
                    "</if>",
                    "<if test = 'ids != null '>",
                        "<foreach collection='ids' item='id' open='and id in(' close=')' separator=','>",
                            "#{id}",
                        "</foreach>",
                    "</if>",
               "</where>",
             "</script>"})
    List<User> getUsersByGenderAndNameAndId(UserQueryVO userQueryVO);
}
